home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / U-Utilities / (c)u2.d64 / gemini char.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  6KB  |  214 lines

  1. 10 REM  ***CHARACTER CREATOR***
  2. 20 REM  *** FOR GEMINI 10X  ***
  3. 30 REM  ***   WITH CARD/?   ***
  4. 40 REM  ***    INTERFACE    ***
  5. 50 REM  ***                 ***
  6. 60 REM  ***    ADAPTED BY   ***
  7. 70 REM  ***      KEN COX    ***
  8. 80 REM  ***   TPUG TORONTO  ***
  9. 90 REM  ***  COPYRIGHT 1984 ***
  10. 100 REM *** OKAY TO GIVE BUT***
  11. 110 REM ***    NOT TO SELL  ***
  12. 120 REM
  13. 130 DIMK(126,10)
  14. 140 OPEN4,4,25:CMD4:PRINT" ":PRINT#4,:CLOSE4
  15. 150 POKE53281,0:POKE53280,12:PRINT""CHR$(142)CHR$(8):POKE253,0
  16. 160 PRINT"[147]     DO YOU WANT INSTRUCTIONS? (Y/N)"
  17. 170 GETI$:IFI$=""THENGOTO170
  18. 180 IFI$="Y"THENGOSUB1630
  19. 190 PRINT"[147]";
  20. 200 PRINT"FONT NAME OR"
  21. 210 INPUT"D[146]IRECTORY  D[157][157][157]";F$
  22. 220 IFF$="D"THENPRINT"":GOSUB1530:GOTO200
  23. 230 REM *READ FILE AND STORE*                   * DATA IN ARRAYS    *
  24. 240 CLOSE1:OPEN 1,8,2,"0:"+F$+",S,R"
  25. 250 OPEN15,8,15:INPUT#15,E,E$
  26. 260 IFE<>0THENPRINT"[147]";E$:CLOSE1:CLOSE15:GOTO200
  27. 270 FORCH=32TO126:FORD=0TO10:INPUT#1,K(CH,D) :NEXTD:NEXTCH
  28. 280 CLOSE1:CLOSE15
  29. 290 GOSUB1250
  30. 300 PRINT"[147]":IFCH>31ANDCH<127THENPRINT"      THE LAST ASCII NUMBER WAS";CH
  31. 310 PRINT "   ENTER THE ASCII NUMBER TO DESIGN"
  32. 320 PRINT"              (32 TO 126)";
  33. 330 INPUTCH
  34. 340 IFCH<32ORCH>126GOTO300
  35. 350 REM
  36. 360 REM  ***SET UP SCREEN DISPLAY***
  37. 370 REM
  38. 380 DE=0:PRINT"[147][158]S -STORE DATA IN MEMORY ASCII NO.";
  39. 390 PRINTCH;"[158]";:PRINTCHR$(CH)
  40. 400 PRINT"P -PRINT THIS CHARACTER"
  41. 410 PRINT"T -PRINT ALL CHARACTERS"
  42. 420 PRINT"F1-DESCENDER ON"
  43. 430 PRINT"F3-DESCENDER OFF"
  44. 440 PRINT"Q -QUIT/WRITE FONT TO DISK"
  45. 450 PRINT"N -NEW GRID (WILL NOT STORE DATA)"
  46. 460 PRINT"E -ERASE DOT"
  47. 470 PRINT"SPACE-DOT ON
  48. 480 [153]"CURSOR CONTROLS TO MOVE"
  49. 490 [153]"          ";:[129]T[178]1[164]9:[153]"TO";:[130]:[153]
  50. 500 [129]T[178]1[164]7:[153]"          THEN";:[129]R[178]1[164]9:[153]".";:[130]:[153]"FN":[130]
  51. 510 [153]"          ";:[129]T[178]1[164]9:[153]"TAB(";:[130]:R[178]0:C[178]0:LS[178]46:TT[178]1
  52. 520 [153]"CMDCMDCMDCMDCMDCMDCMDONONONONONONON";:[141]930
  53. 530 [151]204,0:[161]A$:[139]A$[178]""[167]530
  54. 540 [151]204,1:[139]A$[178]"S"[167][141]810
  55. 550 [139]A$[178]"S"[167][141]840
  56. 560 [139]A$[178]"INPUT"[167] [151]55911,1:[151]55923,1
  57. 570 [139]A$[178]"INPUT"[167]DE[178]1:[151]1640,122:[151]1639,111:[151]1650,76:[151]1651,111
  58. 580 [139]A$[178]"DIM"[167]DE[178]0:[151]1640,103:[151]1650,101:
  59. 590 [139]A$[178]"DIM"[167][151]55911,0:[151]55923,0
  60. 600 [139]A$[178]"E"[167]780
  61. 610 [139]A$[178]"N"[167][137]300
  62. 620 [139]A$[178]"Q"[167][141]840:[137]1330
  63. 630 [139]A$[178]" "[167]790
  64. 640 [139]A$[178]"P"[167][141]840:[141]1020:[141]1170
  65. 650 [139]A$[178]"T"[167][141]840:[141]1020:[129]TE[178]32[164]126:[152]4,[199](TE);:[130]TE
  66. 660 [139]A$[178]"T"[167][152]4,[199](13):[160]4
  67. 670 [139] [194](206)[179][177]46[175]TT[178]1[167][153]" WAIT";
  68. 680 TT[178]0
  69. 690 [139]LS[178]46[167][153]".";:[137]710
  70. 700 [153]" WAIT";
  71. 710 C[178]C[171](A$[178]"")[170](A$[178]"CMD")
  72. 720 R[178]R[171](A$[178]"")[170](A$[178]"ON")
  73. 730 [139]C[179]0[176]C[177]8[167]C[178]0[172](C[177]8)[171]8[172](C[179]0)
  74. 740 [139]R[179]0[176]R[177]6[167]R[178]0[172](R[177]6)[171]6[172](R[179]0)
  75. 750 [153]"":[129]T[178]1[164]10[170]R:[153]"";:[130]:[129]T[178]1[164]17[170]C:[153]"";:[130]
  76. 760 LS[178][194](1481[170]R[172]40[170]C)
  77. 770 [137]530
  78. 780 [153]".";:C[178]C[170]1:[137]710:[143] ERASE ROUTINE
  79. 790 [153]" WAIT";:C[178]C[170]1:[137]710:[143] DOT ROUTINE
  80. 800 [143]
  81. 810 [143] *READ SCREEN DISPLAY AND*
  82. 820 [143] *   AND STORE IN ARRAY  *
  83. 830 [143]
  84. 840 K(CH,0)[178]CH:K(CH,10)[178]DE
  85. 850 SC[178]40
  86. 860 [129]D[178]1[164]9:CM[178]1480[170]D
  87. 870 K(CH,D)[178]0:[129]P[178]0[164]6
  88. 880 [139][194](CM)[178]160[176][194](CM)[178]32[167]K(CH,D)[178]K(CH,D)[170]2[174]P
  89. 890 CM[178]CM[170]SC:[130]P
  90. 900 [130]D
  91. 910 [142]
  92. 920 [143]  *READ ARRAY AND SHOW CHARACTER*
  93. 930 SC[178]40
  94. 940 [129]D[178]1[164]9:CM[178]1480[170]D:[129]P[178]0[164]6
  95. 950 [139]K(CH,D)[175]2[174]P[167][151]CM,160
  96. 960 CM[178]CM[170]SC:[130]P:[130]D
  97. 970 [139]K(CH,10)[178]1[167]DE[178]1:[151]55911,1:[151]55923,1
  98. 980 [139]K(CH,10)[178]1[167][151]1640,122:[151]1639,111:[151]1650,76:[151]1651,111
  99. 990 [142]
  100. 1000 [143]  *TELL PRINTER WHICH ASCII*              * NUMBER IS BEING CHANGED*
  101. 1010 [143]
  102. 1020 [159]4,4
  103. 1030 [152]4,[199](27)[199](42)[199](1)[199](K(CH,0))[199](K(CH,10));
  104. 1040 [143]
  105. 1050 [143]   *SEND NEW CHARACTER DATA*
  106. 1060 [143]
  107. 1070 [129]D[178]1[164]9:[152]4,[199](K(CH,D));:[130]D
  108. 1080 [143]
  109. 1090 [143]    *SELECT DOWNLOADED SET*
  110. 1100 [143]    *    FOR TESTING      *
  111. 1110 [143]
  112. 1120 [152]4,[199](27)[199](36)[199](1);
  113. 1130 [142]
  114. 1140 [143]
  115. 1150 [143]    *PRINT NEW CHARACTER*
  116. 1160 [143]
  117. 1170 [129]P[178]1[164]10:[152]4,[199](K(CH,0));[199](32);:[130]P
  118. 1180 [143]*
  119. 1190 [143]*PRINT CHARACTER WITH UNDERLINE*
  120. 1200 [152]4,[199](27)[199](45)[199](1)
  121. 1210 [129]P[178]1[164]10:[152]4,[199](K(CH,0));[199](32);:[130]P:[152]4,[199](13)
  122. 1220 [152]4,[199](27)[199](45)[199](0):[160]4
  123. 1230 [142]
  124. 1240 [143]  *DOWNLOAD SET FROM DISK*
  125. 1250 [160]4:[159]4,4:[153]"LOAD SENDING DATA TO PRINTER FOR 19 SECONDS"
  126. 1260 [129]CH[178]32[164]126:
  127. 1270 [152]4,[199](27)[170][199](42)[170][199](1)[170][199](CH)[170][199](K(CH,10));
  128. 1280 [129]D[178]1[164]9:[152]4,[199](K(CH,D));:[130]D:[130]CH
  129. 1290 [152]4,[199](27)[199](36)[199](1)
  130. 1300 [160]4: [142]
  131. 1310 [143] *WRITE DATA TO SEQUENTIAL FILE*
  132. 1320 [143]
  133. 1330 [153]"LOAD    WANT TO SAVE FILE TO DISK?(Y/N)
  134. 1340 GETQ$:IFQ$=""THENGOTO1340
  135. 1350 IFQ$="N"THENPRINT"REMEMBER THAT YOUR INTERFACE HAS BEEN   DISABLED.":END
  136. 1360 IFQ$<>"Y"THENGOTO1340
  137. 1370 INPUT" NAME OF FILE:  TEST FONT[157][157][157][157][157][157][157][157][157][157][157]";N$
  138. 1380 CR$=CHR$(13)
  139. 1390 CLOSE1:OPEN 1,8,2,"@0:"+N$+",S,W"
  140. 1400 CLOSE15: OPEN15,8,15 
  141. 1410 INPUT#15,E,E$,E1,E2
  142. 1420 PRINT"";E;E$:FORDL=0TO2000:NEXTDL
  143. 1430 IFE<>0THENGOTO1330
  144. 1440 FORCH=32TO126
  145. 1450 FOR D=0TO10
  146. 1460 PRINT#1,K(CH,D);CR$
  147. 1470 NEXTD
  148. 1480 NEXTCH
  149. 1490 PRINT#1,CHR$(13):CLOSE1
  150. 1500 CLOSE15:PRINT"REMEMBER THAT YOUR INTERFACE HAS BEEN    DISABLED.":END
  151. 1510 REM * DIRECTORY SUBROUTINE *
  152. 1520 REM
  153. 1530 PRINT"[147]":DT=2:A$="0":A=0:B=0
  154. 1540 OPEN2,8,0,"$"+A$+"":GET#2,A$:GET#2,A$
  155. 1550 IFA=DTTHENA=0:PRINT
  156. 1560 PRINTTAB(20*A);
  157. 1570 FORC=1TO4:GET#2,A$:NEXT:IFST<>0THENCLOSE2:PRINTCHR$(13):RETURN
  158. 1580 GET#2,A$:IFA$=""THENA=A+1:GOTO1550
  159. 1590 IFA$=CHR$(34)THENB=NOTB:GOTO1580
  160. 1600 IFBTHENPRINTA$;
  161. 1610 GOTO1580
  162. 1620 REM  * INSTRUCTION ROUTINE *
  163. 1630 PRINT"[147]     THIS UTILITY IS USED TO DESIGN"
  164. 1640 PRINT"  YOUR OWN CHARACTERS FOR THE GEMINI,"
  165. 1650 PRINT"  TEST THEM AND THEN STORE THE DATA ON"
  166. 1660 PRINT"      A DISK FILE.  A 'NORMAL FONT'"
  167. 1670 PRINT"  IS PROVIDED AS A STARTER FILE TO BE"
  168. 1680 PRINT" LOADED BY THE PROGRAM INTO THE PRINTER"
  169. 1690 PRINT"             PRESS SPACE[146]"
  170. 1700 GETSP$:IFSP$=""THENGOTO1700
  171. 1710 IFSP$<>" "THENGOTO1700
  172. 1720 PRINT"[147] THE PRINTER WILL NOT PRINT DOTS WHICH"
  173. 1730 PRINT"    ARE ADJACENT TO EACH OTHER ON A"
  174. 1740 PRINT" HORIZONTAL LINE. LEAVE A SPACE BETWEEN"
  175. 1750 PRINT"  THEM.  ALL VERTICAL DOTS WILL PRINT."
  176. 1760 PRINT"             PRESS SPACE[146]"
  177. 1770 GETSP$:IFSP$=""THENGOTO1770
  178. 1780 PRINT"[147]  IF A CHARACTER REQUIRES A DESCENDER,"
  179. 1790 PRINT" (A PORTION BELOW THE LINE), PRESS F1."
  180. 1800 PRINT" TWO MARKS WILL INDICATE WHICH DOTS ARE"
  181. 1810 PRINT"        ABOVE AND BELOW THE LINE."
  182. 1820 PRINT"              PRESS SPACE[146]"
  183. 1830 GETSP$:IFSP$=""THENGOTO1830
  184. 1840 IFSP$<>" "THENGOTO1830
  185. 1850 PRINT"[147]   TO TEST THE DESIGN ON THE PRINTER,"
  186. 1860 PRINT" PRESS 'P'.  THE CHARACTER IS DISPLAYED"
  187. 1870 PRINT"  WITH AND WITHOUT UNDERLINE.  PRESS"
  188. 1880 PRINT" 'T' TO PRINT ALL CHARACTERS.  ALL THE"
  189. 1890 PRINT"  DATA IS AUTOMATICALLY STORED IN THE"
  190. 1900 PRINT"  MEMORY.  IF YOU DON'T WANT THE DATA
  191. 1910 [153]"STORED, OR YOU WANT A NEW GRID, PRESS'N'"
  192. 1920 [153]"              PRESS SPACEWAIT"
  193. 1930 [161]SP$:[139]SP$[178]""[167][137]1930
  194. 1940 [139]SP$[179][177]" "[167][137]1930
  195. 1950 [153]"LOAD  WHEN YOU QUIT ('Q'), YOU CAN SAVE ALL"
  196. 1960 [153]"    THE DATA TO DISK.  THIS FILE CAN"
  197. 1970 [153]"   BE LOADED BY THIS PROGRAM INTO THE"
  198. 1980 [153]"   PRINTER ANY TIME YOU WANT THE NEW"
  199. 1990 [153]"             CHARACTER SET."
  200. 2000 [153]"              PRESS SPACEWAIT"
  201. 2010 [161]SP$:[139]SP$[178]""[167][137]2010
  202. 2020 [139]SP$[179][177]" "[167][137]2010
  203. 2030 [153]"LOAD    YOU MAY NEED TO ALTER PRINTER AND"
  204. 2040 [153]"          INTERFACE DIP SWITCHES."
  205. 2050 [153]" PRINTER:"
  206. 2060 [153]"   2-1 ON   2-2 OFF   2-3 OFF   2-4 ON"
  207. 2070 [153]" +G INTERFACE:"
  208. 2080 [153]"   ALL ON"
  209. 2090 [153]"OTHER INTERFACES, TRY TRANSPARENT MODE."
  210. 2100 [153]"              PRESS SPACEWAIT"
  211. 2110 [161]SP$:[139]SP$[178]""[167][137]2110
  212. 2120 [139]SP$[179][177]" "[167][137]2110
  213. 2130 [142]
  214.